/**
 * Permission(权限)
 */
export type PermissionField = {
  UUID?: string;
  App: string;
  URL: string;
  Action: string;
  Enable?: boolean;
  Remark?: string;
  InsertTime?: string;
  UpdateTime?: string;
}

/**
 * Role(角色)
 */
export type Role = {
  owner: string;
  name: string;
  createdTime: string;
  displayName: string;
  description: string;

  users: string[];
  groups: string[];
  roles: string[];
  domains: string[];
  isEnabled: boolean;
};


/**
 * Application(应用)
 */
export type ApplicationField = {
  owner: string;
  name: string;
  createdTime: string;

  displayName: string;
  logo: string;
  homepageUrl: string;
  description: string;
  organization: string;
  cert: string;
  headerHtml: string;
  enablePassword: boolean;
  enableSignUp: boolean;
  enableSigninSession: boolean;
  enableAutoSignin: boolean;
  enableCodeSignin: boolean;
  enableSamlCompress: boolean;
  enableSamlC14n10: boolean;
  enableSamlPostBinding: boolean;
  useEmailAsSamlNameId: boolean;
  enableWebAuthn: boolean;
  enableLinkWithEmail: boolean;
  orgChoiceMode: string;
  samlReplyUrl: string;
  grantTypes: string[];
  certPublicKey?: string;
  tags: string[];
  isShared: boolean;
  clientId: string;
  clientSecret: string;
  redirectUris: string[];
  tokenFormat: string;
  tokenSigningMethod: string;
  tokenFields: string[];
  expireInHours: number;
  refreshExpireInHours: number;
  signupUrl: string;
  signinUrl: string;
  forgetUrl: string;
  affiliationUrl: string;
  termsOfUse: string;
  signupHtml: string;
  signinHtml: string;
  footerHtml: string;
  formCss: string;
  formCssMobile: string;
  formOffset: number;
  formSideHtml: string;
  formBackgroundUrl: string;

  failedSigninLimit: number;
  failedSigninFrozenTime: number;
};